"use strict";
var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.matchEmojisInText = matchEmojisInText;
exports.addEmojisToText = addEmojisToText;
exports.analyzeTextEmotion = analyzeTextEmotion;
// emojiParagraphMatcher.ts
var edw_1 = require("edw");
var data_1 = require("./data");
// 将data.ts中的emoji数据转换为搜索格式
// 注意：在实际使用中，您需要正确导入data.ts文件
var emojiData = data_1.keyword;
// 将emoji数据转换为便于搜索的格式
var emojiList = Object.entries(emojiData)
    .map(function (_a) {
    var emoji = _a[0], keywords = _a[1];
    return ({
        emoji: emoji,
        keywords: keywords,
        description: keywords.join(' ')
    });
});
/**
 * 在一段文本中匹配相关的emoji
 * @param text 输入的文本
 * @param limit 返回emoji数量限制
 * @returns 匹配的emoji列表
 */
function matchEmojisInText(text, limit) {
    if (limit === void 0) { limit = 10; }
    // 使用EDW批量计算相似度
    var results = (0, edw_1.batch)(emojiList.map(function (item) { return item.description; }), text, 'word' // 使用词语级匹配
    );
    // 关联emoji信息并按相似度排序
    return results
        .map(function (result, index) { return (__assign(__assign({}, emojiList[index]), { similarity: result.similarity })); })
        .filter(function (item) { return item.similarity > 0.1; }) // 过滤掉相似度太低的结果
        .sort(function (a, b) { return b.similarity - a.similarity; }) // 按相似度降序排列
        .slice(0, limit); // 限制返回数量
}
/**
 * 为文本添加相关的emoji
 * @param text 输入文本
 * @param maxEmojis 最大添加emoji数量
 * @returns 添加emoji后的文本
 */
function addEmojisToText(text, maxEmojis) {
    if (maxEmojis === void 0) { maxEmojis = 3; }
    var matchedEmojis = matchEmojisInText(text, maxEmojis);
    if (matchedEmojis.length === 0) {
        return text;
    }
    // 将匹配度最高的emoji添加到文本开头
    var topEmojis = matchedEmojis.slice(0, maxEmojis).map(function (item) { return item.emoji; }).join(' ');
    return "".concat(topEmojis, " ").concat(text);
}
/**
 * 分析文本情感并返回相关emoji
 * @param text 输入文本
 * @returns 情感分析结果和相关emoji
 */
function analyzeTextEmotion(text) {
    var matchedEmojis = matchEmojisInText(text, 5);
    // 简单的情感分析逻辑
    var positiveKeywords = ['开心', '高兴', '喜欢', '爱', '棒', '好', '赞', '优秀', '完美', '成功'];
    var negativeKeywords = ['难过', '悲伤', '讨厌', '差', '坏', '糟糕', '失败', '问题', '困难', '痛苦'];
    var positiveScore = 0;
    var negativeScore = 0;
    // 检查文本中是否包含情感关键词
    positiveKeywords.forEach(function (keyword) {
        if (text.includes(keyword))
            positiveScore++;
    });
    negativeKeywords.forEach(function (keyword) {
        if (text.includes(keyword))
            negativeScore++;
    });
    // 根据匹配到的emoji进一步判断情感
    matchedEmojis.forEach(function (item) {
        if (item.keywords.some(function (kw) { return positiveKeywords.includes(kw); })) {
            positiveScore += item.similarity;
        }
        if (item.keywords.some(function (kw) { return negativeKeywords.includes(kw); })) {
            negativeScore += item.similarity;
        }
    });
    var emotion = 'neutral';
    if (positiveScore > negativeScore && positiveScore > 0) {
        emotion = 'positive';
    }
    else if (negativeScore > positiveScore && negativeScore > 0) {
        emotion = 'negative';
    }
    else if (positiveScore > 0 && negativeScore > 0) {
        emotion = 'mixed';
    }
    return { emotion: emotion, emojis: matchedEmojis };
}
// 使用示例
console.log('=== 文本Emoji匹配示例 ===\n');
// 示例文本
var texts = [
    "今天天气真好，阳光明媚，我感到非常开心！",
    "这个项目太难了，我遇到了很多问题，感到很沮丧。",
    "恭喜你取得了优异的成绩，太棒了！",
    "今天的会议非常重要，我们需要认真讨论。",
    "昨晚上看了一场精彩的电影，情节非常搞笑。"
];
texts.forEach(function (text, index) {
    console.log("".concat(index + 1, ". \u539F\u6587: \"").concat(text, "\""));
    // 匹配相关emoji
    var matchedEmojis = matchEmojisInText(text, 5);
    console.log("   \u5339\u914D\u7684Emoji: ".concat(matchedEmojis.map(function (item) { return "".concat(item.emoji, "(").concat((item.similarity * 100).toFixed(1), "%)"); }).join(' ')));
    // 为文本添加emoji
    var textWithEmojis = addEmojisToText(text, 2);
    console.log("   \u6DFB\u52A0Emoji\u540E: \"".concat(textWithEmojis, "\""));
    // 情感分析
    var emotionAnalysis = analyzeTextEmotion(text);
    console.log("   \u60C5\u611F\u5206\u6790: ".concat(emotionAnalysis.emotion));
    console.log("   \u60C5\u611FEmoji: ".concat(emotionAnalysis.emojis.slice(0, 3).map(function (item) { return item.emoji; }).join(' '), "\n"));
});
